﻿// #pragma once
//
// #include "function/Render/Camera.h"
//
// #include "glm/glm.hpp"
//
// namespace Engine
// {
// 	class ENGINE_API PerspectiveCamera : public Camera
// 	{
// 	public:
// 		PerspectiveCamera(glm::vec3 pos = glm::vec3(0.0f, 0.0f, 0.0f),
// 		                  glm::vec3 inWorldUp = glm::vec3(0.0f, 1.0f, 0.0f),
// 		                  float inYaw = YAW, float inPitch = PITCH);
// 		PerspectiveCamera(float posX, float posY, float posZ, float upX, float upY, float upZ, float inYaw, float inPitch);
// 		~PerspectiveCamera() override = default;
//
// 		void ProcessKeyboard(CameraMovement direction, float deltaTime) override;
//         void ProcessMouseMovement(float xOffset, float yOffset, bool constrainPitch = true) override;
//         void ProcessMouseScroll(float yOffset) override;
//
// 		[[nodiscard]] const glm::mat4& GetViewMatrix() const override;
//
// 	private:
// 		glm::vec3 position;
// 		glm::vec3 front;
// 		glm::vec3 up;
// 		glm::vec3 right;
// 		glm::vec3 worldUp;
//
// 		float yaw;
// 		float pitch;
//
// 		float moveSpeed;
// 		float mouseSensitivity;
// 		float zoom;
//
// 		void UpdateCameraVectors();
// 	};
// }
